package com.onpositive.notes.model;

import java.io.Serializable;
import java.util.Locale;

import com.onpositive.notes.templates.BasicTemplateModel;

public interface IArgumentModel<C,T extends ITemplateArgument<C>> extends IHasClass<C>, Serializable {

	String getName() ;
	
	String getLabel( ITemplateArgument<C> arg ) ;
	
	String getLabel( ITemplateArgument<C> arg, Locale locale ) ;
	
	T createInstance( C value, ITemplateModel<?> templateModel ) ;
	
	boolean isRequired() ;
	
	int getId() ;
	
	void setId( int id ) ;	
}
